import { getRolesList } from '@/api/react'

// 用户权限数据
export default {
  namespace: 'userAuth',// models命名空间，需全局唯一；如果没声明，会以文件作为namespace

  state: { // models存储的数据store
      permissions:['search'],
      roles:[]
  },

  reducers: { // 更新store，用新数据合并state的旧数据
      addPermissions(state, { payload }) {
          return { ...state, ...payload };
      },
      setRoles(state, { payload }) {
          return { ...state, ...payload };
      },
  },

  effects:{
    // Effect是一个 Generator 函数，内部使用 yield 关键字，标识每一步的操作
    *getRoles ({ payload },{ call , put }) {
      // 这里每个函数都有两个参数，（action,effect), effect = {put,call,select}
      // put 触发一个action
      // call 执行异步函数，比如请求
      const data = yield call(getRolesList)
      yield put({
        type: 'setRoles',
        payload: {"roles":data.data} // 这里直接返回data会获取不到数据，因此我用对象又包了一层
      })
    },
  },

  subscriptions:{//用于订阅一个数据源，然后根据条件 dispatch 需要的 action
    setup({ dispatch, history }) {
      return history.listen(({ pathname }) => { // {pathname} = location
        if (pathname === '/') {
          dispatch({
            type: 'getRemote', // 监听到进入主页，派发query事件
          })
        }
      });
    }
  }
};
